<script>
	export default {
		onLaunch: function() {
			// 异步获取系统信息
			uni.getSystemInfo({
				success: (e) => {
					this.setSystemInfo(e);
				},
			});
			// 异步获取启动参数
			uni.getLaunchOptionsSync({
				success: (e) => {
					this.setLaunchInfo(e);
				},
			});
		},
		// 监听页面不存在事件
		onPageNotFound: function(e) {
			console.log('尝试访问的页面不存在:', e.path);
			console.log('query:' + e.query + ' isEntryPage' + e.isEntryPage);
			
			// 跳转到错误页面 
			uni.redirectTo({
				// 错误页面
				// url: '/pages/errorPage/404'
			});
			
			// // 显示弹窗
			// uni.showToast({  
			// 	title: '页面不存在',  
			// 	icon: 'none',
			// 	mask: true,    // 是否显示透明蒙层
			// 	duration: 3000, // 提示的延迟时间，单位毫秒
			// 	position: 'center' // 纯文本轻提示显示位置
			// }); 
		},
		// 监听全局错误
		onError: function(error) {
			console.error('捕获到全局错误：', error);
				
			// 提示错误弹窗
			uni.showModal({
				title: '发生错误',  
				content: '应用发生未知错误，请稍后重试或联系开发者。',  
				showCancel: false  
			});
			
			// 根据错误类型进行不同的处理  
			if (error.message.includes('网络请求失败')) {  
				// 处理网络请求失败的错误  
				uni.showToast({  
					title: '网络请求失败，请检查网络连接',  
					icon: 'none'  
				});  
			}  
		},
		methods: {
			/**
			 * @description 存储当前设备信息
			 * @param deviceId      设备id
			 * @param deviceBrand   设备品牌  
			 * @param deviceModel   设备型号  
			 * @param deviceType    设备类型
			 */
			setSystemInfo({ deviceId, deviceBrand, deviceModel, deviceType}) {
				uni.setStorageSync("deviceId", deviceId);
				uni.setStorageSync("deviceBrand", deviceBrand);
				uni.setStorageSync("deviceModel", deviceModel);
				uni.setStorageSync("deviceType", deviceType);
			},
			/**
			 * @description 存储当前启动参数
			 * @param path         启动路径
			 * @param query        启动时的query参数
			 * @param referrerInfo 来源信息
			 * @param launcher     应用启动来源
			 */
			setLaunchInfo({ path, query, referrerInfo, launcher}) {
				uni.setStorageSync("path", path);
				uni.setStorageSync("query", query);
				uni.setStorageSync("referrerInfo", referrerInfo);
				uni.setStorageSync("launcher", launcher);
			}
		},
		// 全局变量
		globalData: {  

		}
	}
</script>

<style lang="scss">
	/*每个页面公共css */
	@import "@/uni_modules/uview-ui/index.scss";
	@import '@/uni_modules/uni-scss/index.scss';
	/* #ifndef APP-NVUE */
	@import '@/static/customicons.css';
	// 设置整个项目的背景色
	page {
		background-color: #f5f5f5;
	}

	/* #endif */
	.example-info {
		font-size: 14px;
		color: #333;
		padding: 10px;
	}
</style>
